package main

import (
	"fmt"
	"reflect"
)

type Integer int

// 加法运算
func (a Integer) Add(b Integer) Integer {
	return a + b
}

// 乘法运算
func (a Integer) Multiply(b Integer) Integer {
	return a * b
}

type Math interface {
	Add(i Integer) Integer
	Multiply(i Integer) Integer
}

func main() {
	var a Integer = 1
	var m Math = a
	fmt.Println(m.Add(1))
	fmt.Println(reflect.TypeOf(m))

	elem := reflect.ValueOf(&a).Elem()
	elem1 := reflect.ValueOf(a)
	fmt.Println(elem)
	fmt.Println(elem1)
}
